ديف أوبس

تأمين Nginx بشهادة SSL

إنشاء شهادة SSL لخادوم Nginx على Ubuntu 14.04: دليل شامل ومفصل

إن تأمين الاتصالات بين الخواديم والمستخدمين يعد من الضروريات في بيئة الإنترنت الحديثة. يتم ذلك من خلال استخدام بروتوكول HTTPS الذي يعتمد على شهادات SSL/TLS لتشفير البيانات وضمان سلامتها وسريتها. في هذا المقال، سيتم استعراض كيفية إنشاء شهادة SSL لخادوم Nginx يعمل على نظام Ubuntu 14.04، بشكل مفصل وموسع يغطي جميع الجوانب التقنية والعملية الضرورية لتنفيذ المهمة بأمان واحترافية.


أهمية SSL وتطبيقه على خواديم الويب

شهادة SSL (Secure Sockets Layer) أو النسخة الأحدث منها TLS (Transport Layer Security)، تتيح تشفير الاتصالات بين المستخدم والمتصفح مما يمنع المتطفلين من الوصول إلى البيانات المرسلة، مثل كلمات المرور، معلومات البطاقات البنكية، أو أي بيانات حساسة أخرى.

من أبرز الفوائد التي توفرها شهادات SSL:

  • تأمين الاتصالات من التنصت أو التلاعب.

  • تحسين تصنيف الموقع في محركات البحث، حيث تعتبر Google استخدام HTTPS عاملاً إيجابياً في تقييم المواقع.

  • بناء ثقة المستخدم من خلال ظهور القفل الأخضر في المتصفح.

  • الامتثال لمتطلبات الأمان في العديد من الأنظمة التنظيمية.


التحضيرات قبل تثبيت الشهادة

قبل البدء في تثبيت شهادة SSL على خادوم Nginx، يجب التأكد من توفر ما يلي:

1. نظام Ubuntu 14.04 محدث

رغم أن هذا الإصدار قديم ولم يعد مدعوماً رسمياً، لا يزال يستخدم في بعض البيئات الإنتاجية. يُنصح بتحديث الحزم الأساسية:

bash
sudo apt-get update sudo apt-get upgrade

2. Nginx مثبت ويعمل بشكل صحيح

للتحقق من حالة Nginx:

bash
sudo service nginx status

أو لإعادة تشغيله بعد التعديل:

bash
sudo service nginx restart

3. امتلاك اسم نطاق (Domain Name)

لا يمكن الحصول على شهادة SSL موثوقة بدون امتلاك اسم نطاق صالح، حيث ترتبط الشهادة باسم النطاق بشكل مباشر.


طريقة إنشاء شهادة SSL باستخدام Let’s Encrypt

ما هو Let’s Encrypt؟

هي سلطة إصدار شهادات مجانية ومفتوحة المصدر، مدعومة من قبل جهات تقنية كبرى مثل Mozilla وGoogle. تسهّل بشكل كبير الحصول على شهادات SSL دون الحاجة للدفع.

تثبيت أداة Certbot

تُستخدم أداة Certbot من Let’s Encrypt للحصول على وتحديث الشهادات. بما أن Ubuntu 14.04 لا يحتوي على نسخة حديثة من Certbot في المستودعات الرسمية، يمكن استخدام مستودع PPA:

bash
sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx

الحصول على الشهادة

بعد تثبيت Certbot، يتم تنفيذ الأمر التالي للحصول على الشهادة وتعديل إعدادات Nginx تلقائياً:

bash
sudo certbot --nginx

سيتطلب الأمر منك:

  • إدخال بريد إلكتروني للإشعارات.

  • الموافقة على شروط الاستخدام.

  • اختيار النطاق المراد تأمينه (في حال وجود أكثر من نطاق).

التحقق من نجاح التثبيت

عند الانتهاء، قم بزيارة موقعك باستخدام https://yourdomain.com وتأكد من ظهور رمز القفل في المتصفح.


تكوين Nginx يدوياً لاستخدام شهادة SSL

إذا كنت لا ترغب في أن يقوم Certbot بتعديل ملفات التكوين تلقائياً، يمكنك تعديل ملفات Nginx يدويًا كما يلي:

1. إنشاء مجلد لتخزين الشهادات

bash
sudo mkdir -p /etc/nginx/ssl

2. نسخ الشهادة والمفتاح الخاص إلى المجلد

bash
sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /etc/nginx/ssl/yourdomain.crt sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /etc/nginx/ssl/yourdomain.key

3. تعديل ملف إعدادات الموقع في Nginx

bash
sudo nano /etc/nginx/sites-available/default

أضف الكتلة التالية:

nginx
server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/nginx/ssl/yourdomain.crt; ssl_certificate_key /etc/nginx/ssl/yourdomain.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; }

4. اختبار الإعداد

قبل إعادة تشغيل Nginx، تأكد من أن التكوين صحيح:

bash
sudo nginx -t

ثم أعد تشغيل الخدمة:

bash
sudo service nginx restart

تجديد شهادة SSL تلقائياً

شهادات Let’s Encrypt تكون صالحة لمدة 90 يوماً فقط. من الضروري إعداد مهمة مجدولة (cron job) لتجديد الشهادة تلقائياً:

bash
sudo crontab -e

أضف السطر التالي لتجديد الشهادة مرتين يومياً:

bash
0 0,12 * * * /usr/bin/certbot renew --quiet

إنشاء شهادة SSL ذاتية التوقيع (Self-Signed) في حال غياب النطاق

في بعض الحالات، خصوصاً أثناء التطوير الداخلي، قد لا يتوفر اسم نطاق صالح. في هذه الحالة، يمكن إنشاء شهادة SSL ذاتية التوقيع كما يلي:

1. إنشاء الشهادة

bash
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/nginx-selfsigned.key \ -out /etc/ssl/certs/nginx-selfsigned.crt

2. تعديل إعدادات Nginx

nginx
server { listen 443 ssl; server_name localhost; ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; } }

مقارنة بين الشهادات المجانية والاحترافية

النوع الميزة الأساسية صلاحية الشهادة الثقة في المتصفح دعم النطاقات الفرعية السعر
Let’s Encrypt مجانية ومفتوحة المصدر 90 يوماً موثوقة تماماً محدود مجاني
شهادة من جهة تجارية مثل Comodo أو DigiCert دعم فني، خيارات متقدمة من سنة إلى 3 سنوات موثوقة تماماً متوفرة حسب الخطة مدفوعة
شهادة ذاتية التوقيع مناسبة للاختبار فقط قابلة للتحديد غير موثوقة نعم مجانية

الخاتمة

تثبيت شهادة SSL لخادوم Nginx على Ubuntu 14.04 هو خطوة ضرورية وأساسية لتأمين الاتصالات بين المستخدم والخادوم. يوفر استخدام شهادات مجانية مثل Let’s Encrypt طريقة فعالة وسهلة وسريعة للتطبيق، بينما تظل الشهادات الاحترافية خياراً مثالياً للمشاريع الكبيرة التي تتطلب مستوى أعلى من الدعم والمميزات.

إن اتباع الخطوات بشكل دقيق والحرص على تحديث الشهادة بشكل دوري يضمن بقاء الموقع آمناً ويعزز ثقة المستخدمين في الخدمات المقدمة.


المراجع:

  1. Let’s Encrypt Documentation

  2. Nginx SSL Configuration